A fundamental problem with deploying cryptographic systems is the protection and management of cryptographic keys that are used to encrypt, decrypt, sign, and verify data. Generally cryptographic keys are kept in the same location as where the cryptographic operations are performed. This can mean duplicating keys on many devices, and giving unfettered access to private keys that are essential to the security of the system. Signatures performed using these private keys can prove that a principal possesses access to said private key, thus allowing access to a Protected Resource such as a remote server.